import Vue from 'vue';
// 导入路由模块
import VueRouter from 'vue-router'
// 注册路由模块
Vue.use(VueRouter);

// 导入页面组件
const Layout = () => import('../views/Layout');
const Login = () => import('../views/Login');
// 管理中心
const Home = () => import('../views/Home');
// 菜单管理
const Menu = () => import('../views/menu/Index');
// 角色管理
const Role = () => import('../views/role/Index');
// 管理员管理
const Admin = () => import('../views/admin/Index');
// 分类管理
const Cate = () => import('../views/cate/Index');
// 规格管理
const Specs = () => import('../views/specs/Index');
// 商品管理
const Goods = () => import('../views/goods/Index');
// 秒杀活动
const Seckill = () => import('../views/seckill/Index');

// 路由规则
const routes = [{
    path: '/',
    redirect: '/home'
  },
  {
    path: '/',
    name: 'layout',
    component: Layout,
    meta: {
      requireLogin: true // 是否需要登录
    },
    children: [{
        name: 'home',
        path: '/home',
        component: Home,
        meta: {
          title: '管理中心',
          requireLogin: true
        }
      },
      {
        name: 'menu',
        path: '/menu',
        component: Menu,
        meta: {
          title: '菜单管理',
          requireLogin: true
        }
      },
      {
        name: 'role',
        path: '/role',
        component: Role,
        meta: {
          title: '角色管理',
          requireLogin: true
        }
      },
      {
        name: 'admin',
        path: '/admin',
        component: Admin,
        meta: {
          title: '管理员管理',
          requireLogin: true
        }
      },
      {
        name: 'cate',
        path: '/cate',
        component: Cate,
        meta: {
          title: '分类管理',
          requireLogin: true
        }
      },
      {
        name: 'specs',
        path: '/specs',
        component: Specs,
        meta: {
          title: '规格管理',
          requireLogin: true
        }
      },
      {
        name: 'goods',
        path: '/goods',
        component: Goods,
        meta: {
          title: '商品管理',
          requireLogin: true
        }
      },
      {
        name: 'seckill',
        path: '/seckill',
        component: Seckill,
        meta: {
          title: '秒杀活动管理',
          requireLogin: true
        }
      }
    ]
  },
  {
    path: '/login',
    name: 'login',
    component: Login,
    meta: {
      title: '管理员登录',
      requireLogin: false // 不需要登录
    }
  }
]
// 创建路由实例对象
const router = new VueRouter({
  routes
});
// 全局前置路由导航守卫
router.beforeEach(function (to, from, next) {
   // 从本地存储中读取登录信息
   const adminInfo = JSON.parse(localStorage.getItem('adminInfo') || '{}');
  if (to.meta.requireLogin) {
   
    if (!adminInfo.token) {
      // 重定向到登录页面
      return next('/login');
    }
  }
  // 进行权限校验
  // 将不需要进行权限校验的页面访问地址手动追加到权限数组中
  const urls=adminInfo.menus_url?[...adminInfo.menus_url,'/login','/home']:['/login','/home'];

  // 如果即将前往的页面地址不包含于权限数据中
  if(!urls.includes(to.path)){
    // 重定向到管理中心
    next('/home');
  }
  next();
  // 动态设置页面标题
  if (to.meta.title) {
    document.title = to.meta.title;
  }

});
// 导出路由实例对象
export default router